package xin.marcher.module.message.service;

import xin.marcher.module.common.domain.BinlogData;
import xin.marcher.module.common.domain.TraceData;
import xin.marcher.module.message.domain.bo.DataMessageBO;
import xin.marcher.module.message.domain.bo.DataSendMessageBO;

import java.util.List;

/**
 * 消息业务接口
 *
 * 
 */
public interface MessageService {
    /**
     * 存储一条待发送的消息信息(待发送完成后删除)
     *
     * @param dataMessageBO
     */
    void saveMessage(DataMessageBO dataMessageBO);

    /**
     * 删除一条已发送的消息信息
     *
     * @param dataMessageBO
     */
    void deleteMessage(DataMessageBO dataMessageBO);

    /**
     * 获取对应的外部消息对象信息
     *
     * @param messageNo
     * @return
     */
    DataMessageBO getDataMessageDetail(String messageNo);

    /**
     * 获取需要发送的消息对象
     *
     * @param messageBO
     * @return
     */
    List<DataSendMessageBO> getSendDataMessage(DataMessageBO messageBO);

    /**
     * 处理binlog消息
     *
     * @param binlogData
     */
    void processBinlogMessage(BinlogData binlogData);

    /**
     * 处理数据溯源消息
     *
     * @param traceDataList
     */
    void processTraceMessage(List<TraceData> traceDataList);

    /**
     * 兜底处理缓存数据刷新
     */
    void outDataCacheRefresh();
}
